package com.yuntuzhilian.chapter8;


import java.util.Random;

/**
 * 
 ***************************************************************
 * @类名					:	Game
 * @描述					:	游戏类
 * @作者					:	王淼
 * @版本					:	v1.0
 * @日期					:	2016-6-16             
 * 
 * @最后修改日志			:		
 * @修改人				:	
 * @修订后版本				:	v2.0
 * @修改时间				:	  
 ****************************************************************
 */
public class Game {
	//属性
	private Player player;


	/**
	 * 构造方法,传入玩家对象
	 */
	public Game(Player player) {
		super();
		this.player = player;
	}

	public Player getPlayer() {
		return player;
	}

	public void setPlayer(Player player) {
		this.player = player;
	}

	/**
	 * 游戏类的方法
	 * 输出指定的字符串
	 * @return 返回字符串用与和玩家比较
	 */
	public String printStr(){

		//返回值变量
		String str="";
		//获取玩家不同级别的字符串长度(级别数组从0开始)
		int strLength=LevelParam.levels[player.getLevelNo()-1].getStrLength();
		//使用StringBuffer进行频繁的字符串拼接
		StringBuffer sb=new StringBuffer();
		//生成随机对象(用随机对象得到随机数)
		Random random=new Random();
		//循环生成随机的字符串
		for (int i = 0; i < strLength; i++) {
			//生成随机数(0(包括)到指定值(不包括))
			int randNum=random.nextInt(strLength);
			//根据随机数拼接字符串
			switch (randNum) {
			case 0:
				sb.append("1");
				break;
			case 1:
				sb.append("1");
				break;
			case 2:
				sb.append("1");
				break;
			case 3:
				sb.append("1");
				break;
			case 4:
				sb.append("1");
				break;
			case 5:
				sb.append("1");
				break;
			case 6:
				sb.append("1");
				break;
			}
		}
		//循环拼接完之后,输出
		System.out.println(sb);
		str=sb.toString();
		//返回生成的字符串
		return str;
	}
	
	/**
	 * 判断玩家输入是否正确,并输出相应结果
	 * @param out 游戏输出的字符串
	 * @param in 玩家输入的字符串
	 */
	public void printResult(String out,String in){
		//记录输入是否正确
		boolean flag;
		if (out.equals(in)) {
			flag=true;
		}else {
			flag=false;
		}
		if (flag) {
			//输入正确
			//获取当前系统时间
			Long currentTime=System.currentTimeMillis();
			//判断是否超过当前级别的时间限制
			if ((currentTime-player.getStartTime())/1000>LevelParam.levels[player.getLevelNo()-1].getTimeLimit()) {
				//超过
				System.out.println("你输入的太慢了,已经超时了,退出游戏,欢迎下次再玩!!");
				//终止程序(非正常终止)
				System.exit(1);
			}else {
				//计算当前积分(已经获得的积分+当前级别的积分),然后传到对象的积分中
				player.setCurScore(player.getCurScore()+LevelParam.levels[player.getLevelNo()-1].getPerScore());
				//计算已用时间(当前系统时间-用户开始的时间),然后传到当前对象的已用时间中
				player.setElapsedTime((int)((currentTime-player.getStartTime())/1000));
				//输出当前积分,级别,已用时间
				System.out.println("正确,您的级别为:"+player.getLevelNo()+",您的积分为:"+player.getCurScore()+",已经使用的时间:"+player.getElapsedTime());
				//判断是否是最后一个级别
				if (player.getLevelNo()==6) {
					//然后判断用户是否闯过最后一关,根据当前获得的分数==闯关分数(当前级别的分数*当前级别的次数)
					int score=LevelParam.levels[player.getLevelNo()-1].getPerScore()*LevelParam.levels[player.getLevelNo()-1].getStrTime();
					if (player.getCurScore()==score) {
						System.out.println("闯关成功,成为绝世高手,恭喜恭喜^_^ !!");
						//正常终止
						System.exit(0);
					}
				}
				
			}
		}else {
			//输入错误
			System.out.println("输入错误,与高手无缘!");
			System.exit(1);
		}
		
		
		
		
	}
	
}
